#include <iostream>
#include <string>
#include <expected>  // 标准库中的expected头文件

// 自定义错误类型
struct FileError {
    std::string message;  // 错误消息
};

// 尝试读取文件，可能返回字符串内容或者错误信息
std::expected<std::string, FileError> readFile(const std::string& filename) {
    // 检查文件名是否为空
    if (filename.empty()) {
        // 如果文件名为空，返回错误信息
        return std::unexpected<FileError>{{"文件名不能为空"}};
    }

    // 假设文件读取成功
    std::string data = "文件内容";
    return data;  // 返回文件内容
}
//g++ main.cpp --std=c++23
int main() {
    // 尝试读取空文件名
    auto result = readFile("");

    // 检查结果是否成功
    if (result) {
        // 如果成功，输出文件内容
        std::cout << "文件内容: " << *result << std::endl;
    } else {
        // 如果失败，输出错误信息
        std::cout << "读取文件失败: " << result.error().message << std::endl;
    }

    return 0;
}